import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

# 定义函数
def f(x):
    return x**2 - 4*x - 2

# 定义导函数
def df(x):
    return 2*x - 4

# 在区间[0,4]上绘制函数图像
x = np.linspace(0, 4, 100)
y = f(x)

# 找到导数为0的点
a, b = 0, 4
xi = 2  # 我们手动计算的结果

plt.figure(figsize=(10, 6))
plt.plot(x, y, 'b-', linewidth=2, label='f(x) = x² - 4x - 2')
plt.axhline(y=0, color='k', linestyle='-', alpha=0.3)
plt.axvline(x=0, color='k', linestyle='-', alpha=0.3)
plt.plot([xi], [f(xi)], 'ro', markersize=8, label='平衡点 (2, -6)')
plt.plot([a, b], [f(a), f(b)], 'go', markersize=8, label='端点')
plt.title("罗尔定理可视化")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.legend()
plt.grid(True)
plt.show()

print(f"f(0) = {f(0)}, f(4) = {f(4)}")
print(f"在x={xi}处，导数值为：{df(xi)}")